package br.com.app.ligasoccer.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import br.com.app.ligasoccer.DatabaseHelper;
import br.com.app.ligasoccer.domain.Liga;

public class LigaDAO {

	private DatabaseHelper helper;
	private SQLiteDatabase db;
	
	public LigaDAO(Context context) {
		this.helper = new DatabaseHelper(context);
	}
	
	public SQLiteDatabase getDb() {
		if (this.db == null) {
			this.db = this.helper.getWritableDatabase();
		}
		return this.db;
	}
	
	public List<Liga> listarLigas() {
		Cursor cursor = this.getDb().query(DatabaseHelper.Liga.TABELA, DatabaseHelper.Liga.COLUNAS, null, null, null, null, DatabaseHelper.Liga._ID);
		List<Liga> lista = new ArrayList<Liga>();
		if (cursor.moveToFirst()) {
			do {
				lista.add(new Liga(cursor.getInt(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), new Date(cursor.getLong(4))));
			} while (cursor.moveToNext());
		}
		return lista;
	}
	
	public boolean salvarLiga(Liga liga) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHelper.Liga.NOME, liga.getNome());
		values.put(DatabaseHelper.Liga.QUANTIDADE_DE_JOGADORES, liga.getQuantidadeDeJogadores());
		values.put(DatabaseHelper.Liga.QUANTIDADE_DE_JOGOS, liga.getQuantidadeDeJogos());
		values.put(DatabaseHelper.Liga.DATA_DE_INICIO, liga.getDataDeInicio().getTime());
		
		long resultado = 0;
		if (liga.getId() == null || liga.getId() == 0) {
			resultado = this.getDb().insert(DatabaseHelper.Liga.TABELA, null, values);
		} else {
			resultado = this.getDb().update(DatabaseHelper.Liga.TABELA, values, "_id = ?", new String[]{liga.getId().toString()});
		}
		return resultado != -1 ? true : false;
	}
	
	public boolean excluirLiga(String id) {
		try {
			this.getDb().delete(DatabaseHelper.Jogador.TABELA, "liga_id = ?", new String[]{id});
			this.getDb().delete(DatabaseHelper.Liga.TABELA, "_id = ?", new String[]{id});
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
	}
	
	public Liga carregarLiga(String id) {
		Cursor cursor = this.getDb().query(DatabaseHelper.Liga.TABELA, DatabaseHelper.Liga.COLUNAS, "_id = ?", new String[]{id}, null, null, null);
		Liga liga = null;
		if (cursor.moveToFirst()) {
			liga = new Liga(cursor.getInt(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), new Date(cursor.getLong(4)));
		}
		return liga;
	}
	
	public Liga carregarPorNome(String nome) {
		Cursor cursor = this.getDb().query(DatabaseHelper.Liga.TABELA, DatabaseHelper.Liga.COLUNAS, "nome = ?", new String[]{nome}, null, null, null);
		Liga liga = null;
		if (cursor.moveToFirst()) {
			liga = new Liga(cursor.getInt(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), new Date(cursor.getLong(4)));
		}
		return liga;
	}
}
